Вход

Просмотр полной версии : cssRules.length не работает в Хроме


horan
28.11.2014, 19:35
Здравствуйте, форумчане! Вопрос такой, подключаю в <head> два файла со стилями:

<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/themes.css">

потом с помощью JS пытаюсь alert'oм вывести количество свойств у первого стиля:

alert(document.styleSheets[0].cssRules.length)

Проблема вот в чем: в Хроме и Опере alert не выводит, а в Лисе и даже в IE выводит!!!.

PS. Если вставить содержимое первого стиля в сам документ, то во всех браузерах alert выводит. Но мне нужно только чтоб подключались внешние файлы с таблицами стилей.

Octane
28.11.2014, 19:53
Загружай по HTTP и все будет работать. С file:/// всегда проблемы.

horan
28.11.2014, 20:06
Действительно!Выложил на свой сайт!Заработало!)))Почему интересно локально не работает(((

bes
28.11.2014, 20:34
Действительно!Выложил на свой сайт!Заработало!)))Почему интересно локально не работает(((
потому что браузеры предполагают работу в сети, поставь локальный сервер и не придётся выкладывать на сервер хостера

horan
29.11.2014, 10:06
Спасибо!

kostyanet
29.11.2014, 13:44
html с сетью никак не связан, браузеру пофигу откуда этот текст получать.

kostyanet
29.11.2014, 13:50
bug https://code.google.com/p/chromium/issues/detail?id=49001

bes
29.11.2014, 13:56
html с сетью никак не связан, браузеру пофигу откуда этот текст получать.
bug https://code.google.com/p/chromium/i...etail?id=49001

это не так, есть протокол передачи данных - есть реакция браузера, делать что-то для протокола file вообще смысла нет, поэтому к багам в этом отношении, предполагаю, отношение скептическое, но есть смысл реализовать собственный локальный сервер (устанавливаемый при установке браузера) с поддержкой используемых на боевом фронте протоколов

kostyanet
29.11.2014, 14:13
Не слушайте дятла, file не протокол, а схема, то есть по-нашему (схема в терминах http) - функция. Разница в том что по схеме http браузер получает сведения о приходящих данных в заголовках, а по схеме file - по метатегам в файле. То есть когда поток - заголовки, а когда файл - теги. Причем браузер может сам запихать туда какие надо меты, чтобы потом нормально открыть.

Проблема тут такая же, как с канвасом, в который локально ничего не запихаешь. Браузер не знает о домене, поэтому теряется в догадках и исходя из принципа лучше перебздеть - отключает некоторые фичи связанные с этой кроссдоменностью. Грамотный браузер должен понимать функцию file://, а неграмотный - тупит. Вот и все.

kostyanet
29.11.2014, 14:17
Короче говоря браузер "думает" что вы открыли файл стилей с чужого сайта и хотите там что-то поменять, типа написать в ::after content:"bes - дятел", чтоб оно на том самом сайте и отобразилось.

bes
29.11.2014, 14:23
Не слушайте дятла, file не протокол, а схема, то есть по-нашему (схема в терминах http) - функция. Разница в том что по схеме http браузер получает сведения о приходящих данных в заголовках, а по схеме file - по метатегам в файле. То есть когда поток - заголовки, а когда файл - теги. Причем браузер может сам запихать туда какие надо меты, чтобы потом нормально открыть.

Проблема тут такая же, как с канвасом, в который локально ничего не запихаешь. Браузер не знает о домене, поэтому теряется в догадках и исходя из принципа лучше перебздеть - отключает некоторые фичи связанные с этой кроссдоменностью. Грамотный браузер должен понимать функцию file://, а неграмотный - тупит. Вот и все.

Короче говоря браузер "думает" что вы открыли файл стилей с чужого сайта и хотите там что-то поменять, типа написать в ::after content:"bes - дятел"
протокол - не более чем набор правил, твоя "схема file" также определяет набор правил, то, что эти наборы разные - очевидно даже для тебя, поэтому иди в ж-пу (Gozar не даст соврать, я пожелал тебе добра :D )

kostyanet
29.11.2014, 14:45
Pft,fk!

URI schemes are frequently and incorrectly referred to as "protocols", or specifically as URI protocols or URL protocols, since most were originally designed to be used with a particular protocol, and often have the same name. - http://en.wikipedia.org/wiki/URI_scheme

bes
29.11.2014, 15:01
Pft,fk!

URI schemes are frequently and incorrectly referred to as "protocols", or specifically as URI protocols or URL protocols, since most were originally designed to be used with a particular protocol, and often have the same name. - http://en.wikipedia.org/wiki/URI_scheme
есть ещё общее понятие протокола, my dear friend ;)
но рад, что ты всё-таки углубляешься в смысл понятий :yes: